luci-mod-network: fix address validation
authorKyle Schwarz <[email protected]>
Sat, 19 Nov 2022 21:33:55 +0000 (16:33 -0500)
committerJo-Philipp Wich <[email protected]>
Mon, 3 Apr 2023 11:45:03 +0000 (13:45 +0200)
Fixes --server validation for:
- /domain[/domain]
- //
- /#/

Fixes hostname validation for:
- *.domain
- *domain

Changes ..domain to be an invalid hostname

Signed-off-by: Kyle Schwarz <[email protected]>
(cherry picked from commit de9341648aba82ebbf4af1843854dffb9e63322e)

modules/luci-mod-network/htdocs/luci-static/resources/view/network/dhcp.js

index 4e682d87b4ce700d8aff6eebee2eb484b014fb82..db6d509ea4d46575dad0a917601dc339569de397 100644 (file)
@@ -126,7 +126,7 @@ function validateHostname(sid, s) {
        if (s.length > 256)
                return _('Expecting: %s').format(_('valid hostname'));
 
-       var labels = s.replace(/^\.+|\.$/g, '').split(/\./);
+       var labels = s.replace(/^\*?\.?|\.$/g, '').split(/\./);
 
        for (var i = 0; i < labels.length; i++)
                if (!labels[i].match(/^[a-z0-9_](?:[a-z0-9-]{0,61}[a-z0-9])?$/i))
@@ -156,13 +156,15 @@ function validateServerSpec(sid, s) {
        if (s == null || s == '')
                return true;
 
-       var m = s.match(/^(?:\/(.+)\/)?(.*)$/);
+       var m = s.match(/^(\/.*\/)?(.*)$/);
        if (!m)
                return _('Expecting: %s').format(_('valid hostname'));
 
-       var res = validateAddressList(sid, m[1]);
-       if (res !== true)
-               return res;
+       if (m[1] != '//' && m[1] != '/#/') {
+               var res = validateAddressList(sid, m[1]);
+               if (res !== true)
+                       return res;
+       }
 
        if (m[2] == '' || m[2] == '#')
                return true;